﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Data.Objects.DataClasses;
using System.Linq;

namespace DD_Bootstrap.Models
{
    [MetadataTypeAttribute(typeof(Category.CategoryMetadata))]
    public partial class Category
    {
        internal sealed class CategoryMetadata
        {
            public int CategoryID { get; set; }

            public string CategoryName { get; set; }

            public string Description { get; set; }

            public byte[] Picture { get; set; }

            public EntityCollection<Product> Products { get; set; }
        }
    }

    [MetadataTypeAttribute(typeof(Customer.CustomerMetadata))]
    public partial class Customer
    {
        internal sealed class CustomerMetadata
        {
            public string Address { get; set; }

            public string City { get; set; }

            public string CompanyName { get; set; }

            public string ContactName { get; set; }

            public string ContactTitle { get; set; }

            public string Country { get; set; }

            public EntityCollection<CustomerDemographic> CustomerDemographics { get; set; }

            public string CustomerID { get; set; }

            public string Fax { get; set; }

            public EntityCollection<Order> Orders { get; set; }

            public string Phone { get; set; }

            public string PostalCode { get; set; }

            public string Region { get; set; }
        }
    }

    [MetadataTypeAttribute(typeof(CustomerDemographic.CustomerDemographicMetadata))]
    public partial class CustomerDemographic
    {
        internal sealed class CustomerDemographicMetadata
        {
            public string CustomerDesc { get; set; }

            public EntityCollection<Customer> Customers { get; set; }

            public string CustomerTypeID { get; set; }
        }
    }

    [MetadataTypeAttribute(typeof(Employee.EmployeeMetadata))]
    public partial class Employee
    {
        internal sealed class EmployeeMetadata
        {
            public string Address { get; set; }

            [DataType(DataType.Date)]
            public Nullable<DateTime> BirthDate { get; set; }

            public string City { get; set; }

            public string Country { get; set; }

            public Employee Employee1 { get; set; }

            public int EmployeeID { get; set; }

            public EntityCollection<Employee> Employees1 { get; set; }

            public string Extension { get; set; }

            public string FirstName { get; set; }

            [DataType(DataType.Date)]
            public Nullable<DateTime> HireDate { get; set; }

            public string HomePhone { get; set; }

            public string LastName { get; set; }

            public string Notes { get; set; }

            public EntityCollection<Order> Orders { get; set; }

            public byte[] Photo { get; set; }

            public string PhotoPath { get; set; }

            public string PostalCode { get; set; }

            public string Region { get; set; }

            public Nullable<int> ReportsTo { get; set; }

            public EntityCollection<Territory> Territories { get; set; }

            public string Title { get; set; }

            public string TitleOfCourtesy { get; set; }
        }
    }

    [MetadataTypeAttribute(typeof(Order.OrderMetadata))]
    public partial class Order
    {

        internal sealed class OrderMetadata
        {
            public Customer Customer { get; set; }

            public string CustomerID { get; set; }

            public Employee Employee { get; set; }

            public Nullable<int> EmployeeID { get; set; }

            public Nullable<decimal> Freight { get; set; }

            public EntityCollection<Order_Detail> Order_Details { get; set; }

            [DataType(DataType.Date)]
            public Nullable<DateTime> OrderDate { get; set; }

            public int OrderID { get; set; }

            public Nullable<DateTime> RequiredDate { get; set; }

            public string ShipAddress { get; set; }

            public string ShipCity { get; set; }

            public string ShipCountry { get; set; }

            public string ShipName { get; set; }

            public Nullable<DateTime> ShippedDate { get; set; }

            public Shipper Shipper { get; set; }

            public string ShipPostalCode { get; set; }

            public string ShipRegion { get; set; }

            public Nullable<int> ShipVia { get; set; }
        }
    }

    [MetadataTypeAttribute(typeof(Order_Detail.Order_DetailMetadata))]
    public partial class Order_Detail
    {
        internal sealed class Order_DetailMetadata
        {
            public float Discount { get; set; }

            public Order Order { get; set; }

            public int OrderID { get; set; }

            public Product Product { get; set; }

            public int ProductID { get; set; }

            public short Quantity { get; set; }

            public decimal UnitPrice { get; set; }
        }
    }

    [MetadataTypeAttribute(typeof(Product.ProductMetadata))]
    public partial class Product
    {
        internal sealed class ProductMetadata
        {
            public Category Category { get; set; }

            public Nullable<int> CategoryID { get; set; }

            public bool Discontinued { get; set; }

            public EntityCollection<Order_Detail> Order_Details { get; set; }

            public int ProductID { get; set; }

            public string ProductName { get; set; }

            public string QuantityPerUnit { get; set; }

            public Nullable<short> ReorderLevel { get; set; }

            public Supplier Supplier { get; set; }

            public Nullable<int> SupplierID { get; set; }

            public Nullable<decimal> UnitPrice { get; set; }

            public Nullable<short> UnitsInStock { get; set; }

            public Nullable<short> UnitsOnOrder { get; set; }
        }
    }

    [MetadataTypeAttribute(typeof(Region.RegionMetadata))]
    public partial class Region
    {
        internal sealed class RegionMetadata
        {
            public string RegionDescription { get; set; }

            public int RegionID { get; set; }

            public EntityCollection<Territory> Territories { get; set; }
        }
    }

    [MetadataTypeAttribute(typeof(Shipper.ShipperMetadata))]
    public partial class Shipper
    {
        internal sealed class ShipperMetadata
        {
            public string CompanyName { get; set; }

            public EntityCollection<Order> Orders { get; set; }

            public string Phone { get; set; }

            public int ShipperID { get; set; }
        }
    }

    [MetadataTypeAttribute(typeof(Supplier.SupplierMetadata))]
    public partial class Supplier
    {
        internal sealed class SupplierMetadata
        {
            public string Address { get; set; }

            public string City { get; set; }

            public string CompanyName { get; set; }

            public string ContactName { get; set; }

            public string ContactTitle { get; set; }

            public string Country { get; set; }

            public string Fax { get; set; }

            public string HomePage { get; set; }

            public string Phone { get; set; }

            public string PostalCode { get; set; }

            public EntityCollection<Product> Products { get; set; }

            public string Region { get; set; }

            public int SupplierID { get; set; }
        }
    }

    [MetadataTypeAttribute(typeof(Territory.TerritoryMetadata))]
    public partial class Territory
    {
        internal sealed class TerritoryMetadata
        {
            public EntityCollection<Employee> Employees { get; set; }

            public Region Region { get; set; }

            public int RegionID { get; set; }

            public string TerritoryDescription { get; set; }

            public string TerritoryID { get; set; }
        }
    }
}
